<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 深拷贝拷贝多层, 每一级别的数据都会拷贝.
        const obj = {
            id: 1,
            user: '美的',
            mes: {
                age: 18,
                work: 'it',
                username: ['jock', 'tony', 'daling']
            },
            like: ['sing', 'dance', 'swiming']
        };

        // for(var key in Object) {}      //这个遍历可以遍历数组和对象
        // 封装函数 
        // function deepCopy(newobj, oldobj) {
        //     for (var k in oldobj) {
        //         // 判断我们的属性值属于那种数据类型
        //         // 1. 获取属性值  oldobj[k]
        //         var item = oldobj[k];
        //         // 2. 判断这个值是否是数组
        //         if (item instanceof Array) {
        //             newobj[k] = [];
        //             deepCopy(newobj[k], item)
        //         } else if (item instanceof Object) {
        //             // 3. 判断这个值是否是对象
        //             newobj[k] = {};
        //             deepCopy(newobj[k], item)
        //         } else {
        //             // 4. 属于简单数据类型
        //             newobj[k] = item;
        //         }
        //     }
        // }

        // for(var key in Object) {}      //这个遍历可以遍历数组和对象
        // function deepCopy(newobj, oldobj) {
        //     for (let k in oldobj) {
        //         let item = oldobj[k];
        //         if (item instanceof Array) {
        //             newobj[k] = [];
        //             deepCopy(newobj[k], item);
        //         } else if (item instanceof Object) {
        //             newobj[k] = {};
        //             deepCopy(newobj[k], item);
        //         } else {
        //             newobj[k] = item;
        //         }
        //     }
        // }

        // const o = {};
        // deepCopy(o, obj);
        // console.log(o);

        function deepCopy(newobj, oldobj) {
            for (let k in oldobj) {
                let item = oldobj[k];
                if (Array.isArray(item)) {
                    newobj[k] = [];
                    deepCopy(newobj[k], item);
                } else if (item instanceof Object) {
                    newobj[k] = {};
                    deepCopy(newobj[k], item);
                } else {
                    newobj[k] = item
                }
            }
        }
        const o = {};
        deepCopy(o, obj);
        console.log(o); 
    </script>
</body>

</html>